1
分割統治から自己呼出しへ:再帰の思考の転換
AI028Lesson 4
00:00

反復から再帰へ:思考の再構築

再帰(Recursion)は、問題解決の視点そのものを根本的に変えるアプローチです。リストの合計などに取り組む際には、反復法(コードリスト4-2)は明示的な累積変数 theSum とループの状態制御に依存しますが、再帰法は深い数学的定義に依存しています:

$$listsum(numList) = first(numList) + listsum(rest(numList))$$

再帰は単なる関数の自己呼び出しにとどまりません。複雑な問題を自身の構造を持つより小さな部分問題に分解し、大きな問題と部分問題の間の自己相似性という特徴があります。再帰の実行は、二つの対称的な段階で構成されます:

  • 「下り」段階:リストを繰り返しスライスして呼び出しスタックに積み上げ、解決可能な基本ケース(Base Case)に到達するまでです。
  • 「戻り」段階:最も簡単な状態から始め、段階的に上向きに戻りながら結果を結合していきます。
核心的な直感
反復的思考は「バケツを持って、数字を一つずつ入れて足していく」ようなものです。一方、再帰的思考は「残りの数の合計がわかれば、最初の数だけ足せばいい」というものなのです。